% coding: utf-8

\subsection{Ejemplos de funcionamiento del programa}
\indent A continuación, se detallan algunos ejemplos de ejecución normal de nuestra aplicación. Se muestra el tipo de errores que detecta en las cadenas de entrada, y cómo acepta las cadenas válidas de la gramática propuesta.
Se muestran distintos casos de tests: sólo sumas, sólo restas, sólo multiplicaciones, sólo divisiones, sólo potencias, unidades, variables y combinadas.


\subsubsection{Sumas}

\begin{tabular}{|c|c|}
\hline  
unidades m,s;&	Sentencia: unidades m,s;\\
\hline  
4 + 4;	&Sentencia: 8.0;\\
\hline  
4+ 4;	&Sentencia: 8.0;\\
\hline  
4 +4;	&Sentencia: 8.0;\\
\hline  
4+4;	&Sentencia: 8.0;\\
\hline  
5+5+7;	&Sentencia: 17.0;\\
\hline  
5+(5+7);&	Sentencia: 17.0;\\
\hline  
2m+4m s;&	Sentencia: 2m+4m s;\\
	&Error: Las unidades no coinciden.\\
\hline  
2m+4m$\wedge$2;&	Sentencia: 2m+4m$\wedge$2;\\
	&Error: Las unidades no coinciden.\\
\hline  
2m+3m;	&Sentencia: 5.0 m$\wedge$1 ;\\
\hline  
-5m + 5m;&	Sentencia: 0.0;\\
\hline  
-5m + 5m + 7s;	&Sentencia: 7.0 s$\wedge$1 ;\\
\hline  
(-5m + 5m) + 7s;&	Sentencia: 7.0 s$\wedge$1 ;\\
\hline  
(5m - 5m) + 7s;	&Sentencia: 7.0 s$\wedge$1 ;\\
\hline  
0s$\wedge$2 + 7s;	&Sentencia: 7.0 s$\wedge$1 ;\\
\hline  
7s + 0;	&Sentencia: 7.0 s$\wedge$1 ;\\
\hline  
6 m s + 2 m s;	&Sentencia: 8.0 s$\wedge$1  m$\wedge$1 ;\\
\hline

 \end{tabular}

\subsubsection{Restas}
\begin{tabular}{|c|c|}
\hline  
unidades m,s;	&Sentencia: unidades m,s;\\
\hline  
7-4;	&Sentencia: 3.0;\\
\hline  
7 -4;	&Sentencia: 3.0;\\
\hline  
7- 4;	&Sentencia: 3.0;\\
\hline  
7 - 4;	&Sentencia: 3.0;\\
\hline  
10 - (7 - 4);	&Sentencia: 7.0;\\
\hline  
10 - 7 - 4;	&Sentencia: -1.0;\\
\hline  
3 - 4;	&Sentencia: -1.0;\\
\hline  
3s - 4m;&	Sentencia: 3s - 4m;\\
	&Error: Las unidades no coinciden.\\
\hline  
4 m - 2 m - 2m;	&Sentencia: 0.0;\\
\hline  
4 m - (2 m - 2m);	&Sentencia: 4.0 m$\wedge$1 ;\\
\hline  
2 m s - 3m s;	&Sentencia: -1.0 s$\wedge$1  m$\wedge$1 ;\\
\hline  
6 m$\wedge$3 s$\wedge$-1 - 6 m$\wedge$3 s$\wedge$-1;&	Sentencia: 0.0;\\
\hline  
0 - 7s;	&Sentencia: -7.0 s$\wedge$1 ;\\
\hline  
7s - 0;	&Sentencia: 7.0 s$\wedge$1 ;\\
\hline  
0s$\wedge$3 -7m;	&Sentencia: -7.0 m$\wedge$1 ;\\
\hline  
 \end{tabular}


\subsubsection{Multiplicaci\'on}
\begin{tabular}{|c|c|}
\hline  
unidades m,s;	&Sentencia: unidades m,s;\\
\hline  
4   *  4  3 * 3;&	Sentencia: 144.0;\\
\hline  
4*4 3*3;	&Sentencia: 144.0;\\
\hline  
4 * m 4 s * s 4 * 0;&	Sentencia: 0.0;\\
\hline  
4 * (4 * 4);	&Sentencia: 64.0;\\
\hline  
4 * 4;	&Sentencia: 16.0;\\
\hline  
2m 2m;	&Sentencia: 4.0 m$\wedge$2 ;\\
\hline  
2m m$\wedge$2;	&Sentencia: 2.0 m$\wedge$3 ;\\
\hline  
3m * m$\wedge$2 2m 3s;	&Sentencia: 18.0 s$\wedge$1  m$\wedge$4 ;\\
\hline
 \end{tabular}

\subsubsection{Divisi\'on}
\begin{tabular}{|c|c|}
\hline  
unidades m,s;	&Sentencia: unidades m,s;\\
\hline  
var a = 50m;	&Sentencia: var a = 50.0 m$\wedge$1 ;\\
\hline  
var b = 20s;	&Sentencia: var b = 20.0 s$\wedge$1 ;\\
\hline  
100 / 10 / 5;	&Sentencia: 2.0;\\
\hline  
100 / (10 / 5);	&Sentencia: 50.0;\\
\hline  
(100a) / (2 a b);	&Sentencia: 2.5 s$\wedge$-1 ;\\
\hline  
100/0;	&Sentencia: Infinity;\\
\hline  
0/100;	&Sentencia: 0.0;\\
\hline  
a*a/b;	&Sentencia: 125.0 s$\wedge$-1  m$\wedge$2 ;\\
\hline  
2 s a/b a;	&Sentencia: 250.0 m$\wedge$2 ;\\
\hline
 \end{tabular}

\subsubsection{Potencia}
\begin{tabular}{|c|c|}
\hline  
unidades m,s;	&Sentencia: unidades m,s;\\
\hline  
var a= 2m;	&Sentencia: var a = 2.0 m$\wedge$1 ;\\
\hline  
var b=20s;	&Sentencia: var b = 20.0 s$\wedge$1 ;\\
\hline  
4$\wedge$2;	&Sentencia: 16.0;\\
\hline  
4$\wedge$-3;	&Sentencia: 0.015625;\\
\hline  
-4$\wedge$2;	&Sentencia: -16.0;\\
\hline  
(2$\wedge$3)$\wedge$2;	&Sentencia: 64.0;\\
\hline  
(a$\wedge$2)$\wedge$-3$\wedge$-4;	&Sentencia: 1.6777216E7 m$\wedge$24 ;\\
\hline  
(a b)$\wedge$2;	&Sentencia: 1600.0 s$\wedge$2  m$\wedge$2 ;\\
\hline  
a b$\wedge$2;	&Sentencia: 800.0 s$\wedge$2  m$\wedge$1 ;\\
\hline  
(5 m)$\wedge$0;	&Sentencia: 1.0;\\
\hline  
5$\wedge$0;	&Sentencia: 1.0;\\
\hline  
(5 m)$\wedge$1;	&Sentencia: 5.0 m$\wedge$1 ;\\
\hline  
10 s m$\wedge$3 * (3 s m$\wedge$-3);&	Sentencia: 30.0 s$\wedge$2 ;\\
\hline  
10 s m$\wedge$3 / (3 s m$\wedge$-3);&	Sentencia: 3.3333333 m$\wedge$6 ;\\
\hline  
 \end{tabular}

\subsubsection{Unidades}
\begin{tabular}{|c|c|}
\hline  
3 t;	&Sentencia: 3 t;\\		
	&Error: 't' no fue declarado como variable ni como unidad.\\		
\hline  
unidades s, m;	&Sentencia: unidades s, m;\\		
\hline  
s$\wedge$4/m;	&Sentencia: 1.0 s$\wedge$4  m$\wedge$-1 ;\\		
\hline  
s/m;	&Sentencia: 1.0 s$\wedge$1  m$\wedge$-1 ;\\		
\hline  
s$\wedge$2/s;	&Sentencia: 1.0 s$\wedge$1 ;\\		
\hline  
s/s$\wedge$2;	&Sentencia: 1.0 s$\wedge$-1 ;\\		
\hline  
s$\wedge$2/m$\wedge$4;&	Sentencia: 1.0 s$\wedge$2  m$\wedge$-4 ;\\		
\hline  
2 m/4 s;&	Sentencia: 0.5 s$\wedge$1  m$\wedge$1 ;\\		
\hline  
2 m/s;	&Sentencia: 2.0 s$\wedge$-1  m$\wedge$1 ;\\		
\hline  
unidades s;	&Sentencia: unidades s;\\		
	&Error: 's' ya fue declarada como medida\\		
\hline  
var m = 1;&	Sentencia: var m = 1;\\		
	&Error: La variable m ya fue declarada como unidad\\		
\hline
 \end{tabular}

\subsubsection{Variables}
\begin{tabular}{|c|c|}
\hline  
var a = 3;	&Sentencia: var a = 3.0;\\		
\hline  
var b = 4;	&Sentencia: var b = 4.0;\\		
\hline  
a b;	&Sentencia: 12.0;\\		
\hline  
var a = 2;&	Sentencia: var a = 2;\\		
	&Error: La variable a ya fue declarada como variable\\		
\hline  
a + b;	&Sentencia: 7.0;\\		
\hline  
a - b;	&Sentencia: -1.0;\\		
\hline  
a * b;	&Sentencia: 12.0;\\		
\hline  
a / b;	&Sentencia: 0.75;\\		
\hline  
4 c;	&Sentencia: 4 c;\\		
	&Error: 'c' no fue declarado como variable ni como unidad.\\		
\hline  
unidades a;&	Sentencia: unidades a;\\		
	&Error: 'a' ya fue declarada como variable\\		
\hline  
unidades m, s;	&Sentencia: unidades m, s;\\		
\hline  
var c = 5 m;	&Sentencia: var c = 5.0 m$\wedge$1 ;\\		
\hline  
var d = 10 s;	&Sentencia: var d = 10.0 s$\wedge$1 ;\\		
\hline  
d / c;	&Sentencia: 2.0 s$\wedge$1  m$\wedge$-1 ;\\		
\hline  
d * c;	&Sentencia: 50.0 s$\wedge$1  m$\wedge$1 ;\\		
\hline  
d + c;	&Sentencia: d + c;\\		
	&Error: Las unidades no coinciden.\\		
\hline  
d m + c s;	&Sentencia: 15.0 s$\wedge$1  m$\wedge$1 ;\\		
\hline
 \end{tabular}

\subsubsection{Combinadas}
\begin{tabular}{|c|c|}
\hline  
4 - 4 * 5;	&Sentencia: -16.0;\\
\hline  
4 * 4 $\wedge$ -2 - 5;	&Sentencia: -4.75;\\
\hline  
4 * 4 + 3;	&Sentencia: 19.0;\\
\hline  
4 * (4 + 3);	&Sentencia: 28.0;\\
\hline  
4 * 4+3*3;	&Sentencia: 25.0;\\
\hline  
100 / 10 / 5;	&Sentencia: 2.0;\\
\hline  
4 (-4);	&Sentencia: -16.0;\\
\hline  
100/10*5;	&Sentencia: 50.0;\\
\hline  
5 (-2);	&Sentencia: -10.0;\\
\hline  
var a = 3;&	Sentencia: var a = 3.0;\\
\hline  
var b = 4;&	Sentencia: var b = 4.0;\\
\hline  
a b;	&Sentencia: 12.0;\\
\hline  
unidades s, m;	&Sentencia: unidades s, m;\\
\hline  
a s$\wedge$4/m;	&Sentencia: 3.0 s$\wedge$4  m$\wedge$-1 ;\\
\hline  
s/m b;	&Sentencia: 4.0 s$\wedge$1  m$\wedge$-1 ;\\
\hline  
s/(m b);&	Sentencia: 0.25 s$\wedge$1  m$\wedge$-1 ;\\
\hline  
s$\wedge$2/s;	&Sentencia: 1.0 s$\wedge$1 ;\\
\hline  
s/s$\wedge$2;	&Sentencia: 1.0 s$\wedge$-1 ;\\
\hline  
s$\wedge$2/m$\wedge$4;&	Sentencia: 1.0 s$\wedge$2  m$\wedge$-4 ;\\
\hline  
2 m/4 s;&	Sentencia: 0.5 s$\wedge$1  m$\wedge$1 ;\\
\hline  
2 m/s;	&Sentencia: 2.0 s$\wedge$-1  m$\wedge$1 ;\\
\hline  
2m/m$\wedge$2 4-5;&	Sentencia: 3.0;\\
\hline  
2m/m$\wedge$2 4;&	Sentencia: 8.0 m$\wedge$-1 ;\\
\hline  
2m/m$\wedge$2 4+5 m$\wedge$-1;	&Sentencia: 13.0 m$\wedge$-1 ;\\
\hline  
2m 2s/m$\wedge$2;&	Sentencia: 4.0 s$\wedge$1  m$\wedge$-1 ;\\
\hline  
3m - 3m;&	Sentencia: 0.0;\\
\hline  
3m - 3m + 5s;& 	Sentencia: 5.0 s$\wedge$1 ;\\
\hline  
3m - 3m + 5s + 0;& 	Sentencia: 5.0 s$\wedge$1 ;\\
\hline  
3m - 3m + 5s + (7m - 7m); &	Sentencia: 5.0 s$\wedge$1 ;\\
\hline  
3m - 3m - 5s - (7m - 7m); &	Sentencia: -5.0 s$\wedge$1 ;\\
\hline
 \end{tabular}


\subsubsection{Errores sint\'anticos o l\'exicos}

\begin{tabular}{|c|c|}
\hline  
((;	&line 1:3 no viable alternative at input ';'Sentencia: 0.0;\\			
\hline  
43 unidades m, 3;&	line 1:4 missing DOTCOM at 'unidades'\\			
	&line 1:15 mismatched input '3' expecting ID\\			
\hline  
 \end{tabular}

